package com.youlu.campus.wechat.service;

import com.youlu.campus.wechat.entity.ComplaintNotifyResponse;
import com.youlu.campus.entity.complaint.MerchantComplaint;
import com.youlu.campus.entity.complaint.NotifyDecrypt;
import com.youlu.campus.entity.complaint.ReplyUserComplaint;
import com.youlu.campus.entity.complaint.vo.ComplaintHistoryResult;

import java.util.HashMap;

/**
 * 公钥模式- 微信商户投诉服务
 *
 * @Description: PubKeyWechatMerchantComplaintServiceImpl
 * @Date 2025/6/18
 * @author: su
 */
public interface WechatComplaintService {


    /**
     * 获取配置md5
     *
     * @return
     */
    public String getConfigMD5();

    /**
     * 通知解析
     *
     * @param signatue
     * @param serialNo
     * @param nonce
     * @param timestamp
     * @param body
     * @return
     */
    public NotifyDecrypt notifyParse(String signatue, String serialNo, String nonce, String timestamp, String body) throws Exception;

    /**
     * 创建投诉通知回调地址
     *
     * @param url yyyy-MM-dd
     * @return
     */
    public ComplaintNotifyResponse createNotifyUrl(String url);

    /**
     * 查询投诉通知回调地址
     *
     * @return
     */
    public ComplaintNotifyResponse getNotifyUrl();

    /**
     * 删除投诉通知回调地址
     *
     * @return
     */
    public ComplaintNotifyResponse deleteNotifyUrl();

    /**
     * 查询 投诉列表
     *
     * @param beginDate yyyy-MM-dd
     * @param endDate   yyyy-MM-dd
     * @param limit
     * @param offset
     * @return
     */
    public HashMap queryList(String beginDate, String endDate, Integer limit, Integer offset);

    /**
     * 查询投诉单详情 投诉单号
     *
     * @param complaintId
     * @return
     */
    public MerchantComplaint queryDetail(String complaintId);

    /**
     * 查询投诉单协商历史
     *
     * @return
     */
    public ComplaintHistoryResult negotiationHistorys(String complaintId, Integer limit, Integer offset);

    /**
     * 回复用户
     */
    public void response(ReplyUserComplaint replyUserComplaint);

    /**
     * 反馈处理完成
     */
    public void complete(String complaintId);
}
